<template>
  <view class="container">
    <!-- 页面头部 -->
    <view class="main-header">
      <image
        class="bg-image"
        src="/static/background/user-header2.png"
        mode="scaleToFill"
      ></image>
      <!-- 用户信息 -->
      <view class="user-info" v-if="token">
        <view class="user-avatar">
          <view class="avatar-image">
            <image
              class="image"
              cc
              :style="{
                width: `100rpx`,
                height: `100rpx`,
                borderColor: '#fff'
              }"
              :src="
                Info.avatar ||
                'https://cdn.wwads.cn/creatives/bOAxe76ZfpFsdDUC5k6yXBHOlszBfdME9KDJytKe.png'
              "
            ></image>
          </view>
        </view>
        <view class="user-content">
          <!-- 会员昵称 -->
          <view class="nick-name oneline-hide">{{ Info.nick_name }}</view>
          <!-- 会员等级 -->
          <view class="user-grade" v-if="Info.grade">
            <view class="user-grade_icon">
              <image
                class="image"
                src=""
              >
              </image>
            </view>
            <view class="user-grade_name">
              <text>{{ Info.grade || 1 }}</text>
            </view>
          </view>
          <!-- 会员无等级时显示手机号 -->
          <view class="mobile" v-else>{{ Info.mobile }}</view>
        </view>
      </view>
      <!-- 未登录 -->
      <view class="user-info" v-else>
        <view class="user-avatar">
          <view class="avatar-image">
            <image
              class="image"
              cc
              :style="{
                width: `100rpx`,
                height: `100rpx`,
                borderColor: '#fff'
              }"
              src="https://cdn.wwads.cn/creatives/bOAxe76ZfpFsdDUC5k6yXBHOlszBfdME9KDJytKe.png"
            ></image>
          </view>
        </view>
        <view class="user-content">
          <view class="nick-name">未登录</view>
          <view class="login-tips">点击登录账号</view>
        </view>
      </view>
    </view>

    <!-- 我的钱包 -->
    <view class="my-asset">
      <view class="asset-left flex-box dis-flex flex-x-around">
        <view class="asset-left-item">
          <view class="item-value dis-flex flex-x-center">
            <text>{{ Info.balance }}</text>
          </view>
          <view class="item-name dis-flex flex-x-center">
            <text>账户余额</text>
          </view>
        </view>
        <view class="asset-left-item">
          <view class="item-value dis-flex flex-x-center">
            <text>{{ Info.points }}</text>
          </view>
          <view class="item-name dis-flex flex-x-center">
            <text>积分</text>
          </view>
        </view>
        <view class="asset-left-item">
          <view class="item-value dis-flex flex-x-center">
            <text>333</text>
          </view>
          <view class="item-name dis-flex flex-x-center">
            <text>优惠券</text>
          </view>
        </view>
      </view>
      <view class="asset-right">
        <view class="asset-right-item">
          <view class="item-icon dis-flex flex-x-center">
            <text class="iconfont icon-qianbao"></text>
          </view>
          <view class="item-name dis-flex flex-x-center">
            <text>我的钱包</text>
          </view>
        </view>
      </view>
    </view>

    <!-- 订单操作 -->
    <view class="order-navbar">
      <view
        class="order-navbar-item"
        v-for="(item, index) in orderNavbar"
        :key="index"
      >
        <view class="item-icon">
          <text class="iconfont" :class="[`icon-${item.icon}`]"></text>
        </view>
        <view class="item-name">{{ item.name }}</view>
        <view class="item-badge" v-if="item.count && item.count > 0">
          <text v-if="item.count <= 99" class="text">{{ item.count }}</text>
          <text v-else class="text">99+</text>
        </view>
      </view>
    </view>

    <!-- 我的服务 -->
    <view class="my-service">
      <view class="service-title">我的服务</view>
      <view class="service-content clearfix">
        <block v-for="(item, index) in service" :key="index">
          <view
            v-if="item.type == 'link'"
            class="service-item"
            @click="goLink(item.url)"
          >
            <view class="item-icon">
              <text class="iconfont" :class="[`icon-${item.icon}`]"></text>
            </view>
            <view class="item-name">{{ item.name }}</view>
            <view class="item-badge" v-if="item.count && item.count > 0">
              <text v-if="item.count <= 99" class="text">{{ item.count }}</text>
              <text v-else class="text">99+</text>
            </view>
          </view>
          <view
            v-if="item.type == 'button' && platform == 'MP-WEIXIN'"
            class="service-item"
          >
            <button class="btn-normal" :open-type="item.openType">
              <view class="item-icon">
                <text class="iconfont" :class="[`icon-${item.icon}`]"></text>
              </view>
              <view class="item-name">{{ item.name }}</view>
            </button>
          </view>
        </block>
      </view>
    </view>

    <!-- 退出登录 -->
    <view class="my-logout">
      <view class="logout-btn">
        <text>退出登录</text>
      </view>
    </view>
  </view>
</template>

<script>
// 订单操作
const orderNavbar = [
  { id: 'all', name: '全部订单', icon: 'qpdingdan' },
  { id: 'payment', name: '待支付', icon: 'daifukuan', count: 0 },
  { id: 'delivery', name: '待发货', icon: 'daifahuo', count: 0 },
  { id: 'received', name: '待收货', icon: 'daishouhuo', count: 0 }
]

/**
 * 我的服务
 * id: 标识; name: 标题名称; icon: 图标; type 类型(link和button); url: 跳转的链接
 */
const service = [
  {
    id: 'address',
    name: '收货地址',
    icon: 'shouhuodizhi',
    type: 'link',
    url: 'pages/address/index'
  },
  {
    id: 'coupon',
    name: '领券中心',
    icon: 'lingquan',
    type: 'link',
    url: 'pages/coupon/index'
  },
  {
    id: 'myCoupon',
    name: '优惠券',
    icon: 'youhuiquan',
    type: 'link',
    url: 'pages/my-coupon/index'
  },
  {
    id: 'help',
    name: '我的帮助',
    icon: 'bangzhu',
    type: 'link',
    url: 'pages/help/index'
  },
  {
    id: 'contact',
    name: '在线客服',
    icon: 'kefu',
    type: 'button',
    openType: 'contact'
  },
  {
    id: 'points',
    name: '我的积分',
    icon: 'jifen',
    type: 'link',
    url: 'pages/points/log'
  },
  {
    id: 'refund',
    name: '退换/售后',
    icon: 'shouhou',
    type: 'link',
    url: 'pages/refund/index',
    count: 0
  }
]

import { mapGetters } from 'vuex'
import { info } from '@/api/user'
export default {
  data () {
    return {
      // 我的服务
      service,
      // 订单操作
      orderNavbar,
      // 用户信息
      Info: {}
    }
  },
  computed: {
    ...mapGetters(['token'])
  },
  onLoad () {
    this.getUserInfo()
  },
  methods: {
    async getUserInfo () {
      const { data } = await info()
      this.Info = data.userInfo
    },
    goLink (url) {
      uni.navigateTo({ url: `/${url}` })
    }
  },
  onShow () {
    // 获取用户基本信息
    this.getUserInfo()
  }
}
</script>

<style lang="scss" scoped>
.avatar-image {
  .image {
    display: block;
    width: 60rpx;
    height: 60rpx;
    border-radius: 50%;
    border-style: solid;
  }
}
// 页面头部
.main-header {
  background-color: #fff;
  // background-image: url('/static/background/user-header.png');
  position: relative;
  width: 100%;
  height: 280rpx;
  background-size: 100% 100%;
  overflow: hidden;
  display: flex;
  align-items: center;
  // padding-top: 40rpx;
  padding-left: 30rpx;

  .bg-image {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
  }

  .user-info {
    display: flex;
    height: 100rpx;
    z-index: 1;

    .user-content {
      display: flex;
      flex-direction: column;
      justify-content: center;
      margin-left: 30rpx;
      color: #c59a46;

      .nick-name {
        font-size: 34rpx;
        font-weight: bold;
        max-width: 270rpx;
      }

      .mobile {
        margin-top: 15rpx;
        font-size: 28rpx;
      }

      .user-grade {
        align-self: baseline;
        display: flex;
        align-items: center;
        background: #3c3c3c;
        margin-top: 12rpx;
        border-radius: 10rpx;
        padding: 4rpx 12rpx;

        .user-grade_icon .image {
          display: block;
          width: 32rpx;
          height: 32rpx;
        }

        .user-grade_name {
          margin-left: 5rpx;
          font-size: 26rpx;
          color: #eee0c3;
        }
      }

      .login-tips {
        margin-top: 12rpx;
        font-size: 30rpx;
      }
    }
  }
}

// 角标组件
.item-badge {
  position: absolute;
  top: 0;
  right: 55rpx;
  background: #fa2209;
  color: #fff;
  border-radius: 100%;
  min-width: 38rpx;
  height: 38rpx;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 1rpx;
  font-size: 24rpx;
}

// 我的钱包
.my-asset {
  display: flex;
  background: #fff;
  padding: 40rpx 0;

  .asset-right {
    width: 200rpx;
    border-left: 1rpx solid #eee;
  }

  .asset-right-item {
    text-align: center;
    color: #545454;

    .item-icon {
      font-size: 44rpx;
    }

    .item-name {
      margin-top: 14rpx;
      font-size: 28rpx;
    }
  }

  .asset-left-item {
    text-align: center;
    color: #666;
    padding: 0 42rpx;

    .item-value {
      font-size: 34rpx;
      color: red;
    }

    .item-name {
      margin-top: 6rpx;
    }

    .item-name {
      margin-top: 14rpx;
      font-size: 28rpx;
    }
  }
}

// 订单操作
.order-navbar {
  display: flex;
  margin: 20rpx auto 20rpx auto;
  padding: 20rpx 0;
  width: 94%;
  box-shadow: 0 1rpx 5rpx 0px rgba(0, 0, 0, 0.05);
  font-size: 30rpx;
  border-radius: 5rpx;
  background: #fff;

  &-item {
    position: relative;
    width: 25%;

    .item-icon {
      text-align: center;
      margin: 0 auto;
      padding: 10rpx 0;
      color: #545454;
      font-size: 44rpx;
    }

    .item-name {
      font-size: 28rpx;
      color: #545454;
      text-align: center;
      margin-right: 10rpx;
    }
  }
}

// 我的服务
.my-service {
  margin: 22rpx auto 22rpx auto;
  padding: 22rpx 0;
  width: 94%;
  box-shadow: 0 1rpx 5rpx 0px rgba(0, 0, 0, 0.05);
  border-radius: 5rpx;
  background: #fff;

  .service-title {
    padding-left: 24rpx;
    margin-bottom: 20rpx;
    font-size: 30rpx;
  }

  .service-content {
    margin-bottom: -20rpx;

    .service-item {
      position: relative;
      width: 25%;
      float: left;
      margin-bottom: 30rpx;

      .item-icon {
        text-align: center;
        margin: 0 auto;
        padding: 14rpx 0;
        color: #ff3800;
        font-size: 44rpx;
      }

      .item-name {
        font-size: 28rpx;
        color: #545454;
        text-align: center;
        margin-right: 10rpx;
      }
    }
  }
}

// 退出登录
.my-logout {
  display: flex;
  justify-content: center;
  margin-top: 50rpx;

  .logout-btn {
    width: 60%;
    margin: 0 auto;
    font-size: 28rpx;
    color: #616161;
    border-radius: 20rpx;
    border: 1px solid #dcdcdc;
    padding: 16rpx 0;
    text-align: center;
  }
}
</style>
